package cn.iocoder.yudao.module.product.service.stockinfo;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.product.controller.admin.stockinfo.vo.StockInfoPageReqVO;
import cn.iocoder.yudao.module.product.controller.admin.stockinfo.vo.StockInfoSaveReqVO;
import cn.iocoder.yudao.module.product.dal.dataobject.stockinfo.StockInfoDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 库存信息 Service 接口
 *
 * @author 芋道源码
 */
public interface StockInfoService {

    /**
     * 创建库存信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createStockInfo(@Valid StockInfoSaveReqVO createReqVO);
    /**
     * 批量创建库存信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    void createStockInfoBath(@Valid List<StockInfoSaveReqVO> createReqVO);

    /**
     * 更新库存信息
     *
     * @param updateReqVO 更新信息
     */
    void updateStockInfo(@Valid StockInfoSaveReqVO updateReqVO);

    /**
     * 删除库存信息
     *
     * @param id 编号
     */
    void deleteStockInfo(Long id);

    /**
     * 获得库存信息
     *
     * @param id 编号
     * @return 库存信息
     */
    StockInfoDO getStockInfo(Long id);


    /**
     * 获得库存信息分页
     *
     * @param pageReqVO 分页查询
     * @return 库存信息分页
     */
    PageResult<StockInfoDO> getStockInfoPage(StockInfoPageReqVO pageReqVO);

    /**
     *  获取库存信息列表
     * @param respVO
     * @return
     */
    PageResult<StockInfoSaveReqVO> getStockInfoList(StockInfoSaveReqVO respVO);

    /**
     *  查询spu对应所有门店
     * @param spuId
     * @return
     */
    List<StockInfoSaveReqVO> getStockInfoBySpuId(Long spuId);

    /**
     *  删除spu对应门店记录
     * @param collect2
     * @param spuId
     */
    void deleteStockInfoBathBySpuId(List<Long> collect2, Long spuId);
}
